package com.huashi.dealer.modular.business.order.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huashi.dealer.commonEntity.OrderGoods;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 订单商品Service接口
 */
public interface OrderGoodsService extends IService<OrderGoods> {

    /**
     * 根据订单ID查询订单商品列表
     * @param orderId 订单ID
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByOrderId(Integer orderId);

    /**
     * 根据用户ID查询订单商品列表
     * @param userId 用户ID
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByUserId(Integer userId);

    /**
     * 根据商品ID查询订单商品列表
     * @param goodsId 商品ID
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByGoodsId(Integer goodsId);

    /**
     * 根据订单ID和商品ID查询订单商品
     * @param orderId 订单ID
     * @param goodsId 商品ID
     * @return 订单商品
     */
    OrderGoods getOrderGoodsByOrderIdAndGoodsId(Integer orderId, Integer goodsId);

    /**
     * 根据小程序ID查询订单商品列表
     * @param wxappId 小程序ID
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByWxappId(Integer wxappId);

    /**
     * 根据订单ID列表查询订单商品列表
     * @param orderIds 订单ID列表
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByOrderIds(List<Integer> orderIds);

    /**
     * 根据评价状态查询订单商品列表
     * @param isComment 是否已评价(0否 1是)
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByCommentStatus(Integer isComment);

    /**
     * 根据发货状态查询订单商品列表
     * @param isOrderExpress 是否发货（10未发货，20已发货）
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByExpressStatus(Integer isOrderExpress);

    /**
     * 根据商品类型查询订单商品列表
     * @param isType 分类（10商品，20赠品）
     * @return 订单商品列表
     */
    List<OrderGoods> getOrderGoodsByType(Integer isType);

    /**
     * 添加订单商品
     * @param orderGoods 订单商品
     * @return 是否成功
     */
    boolean addOrderGoods(OrderGoods orderGoods);

    /**
     * 更新订单商品
     * @param orderGoods 订单商品
     * @return 是否成功
     */
    boolean updateOrderGoods(OrderGoods orderGoods);

    /**
     * 删除订单商品
     * @param orderGoodsId 订单商品ID
     * @return 是否成功
     */
    boolean deleteOrderGoods(Integer orderGoodsId);

    /**
     * 批量添加订单商品
     * @param orderGoodsList 订单商品列表
     * @return 是否成功
     */
    boolean batchAddOrderGoods(List<OrderGoods> orderGoodsList);

    /**
     * 根据订单ID删除订单商品
     * @param orderId 订单ID
     * @return 是否成功
     */
    boolean deleteOrderGoodsByOrderId(Integer orderId);

    /**
     * 更新订单商品评价状态
     * @param orderGoodsId 订单商品ID
     * @param isComment 是否已评价(0否 1是)
     * @return 是否成功
     */
    boolean updateCommentStatus(Integer orderGoodsId, Integer isComment);

    /**
     * 更新订单商品发货状态
     * @param orderGoodsId 订单商品ID
     * @param isOrderExpress 是否发货（10未发货，20已发货）
     * @return 是否成功
     */
    boolean updateExpressStatus(Integer orderGoodsId, Integer isOrderExpress);

    /**
     * 回退商品库存
     * @param orderGoods 订单商品
     * @return 是否成功
     */
    boolean backGoodsStock(OrderGoods orderGoods);
} 